package com.ler.yrmall.coupon.api;

import com.ler.yrmall.coupon.dto.CouponDTO;
import com.ler.yrmall.coupon.dto.SeckillSkuDTO;
import com.ler.yrmall.coupon.dto.SpuBoundDTO;
import com.ler.yrmall.basic.Result;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author Leron
 */
public interface CouponApi {

    /**
     * 保存 spu 积分
     * @param data
     * @return
     */
    Result<?> saveSpuBounds(SpuBoundDTO data);


    /**
     * 获取当前 sku 参与的秒杀信息
     * @param skuId
     * @return
     */
    Result<SeckillSkuDTO> getSkuSeckill(Long skuId);


    /**
     * 计算当前登陆人最优的优惠券
     * @param spuIdList 商品id
     * @param amount 总金额
     * @return
     */
    Result<CouponDTO> computeBestCoupon(List<Long> spuIdList, BigDecimal amount);

    /**
     * 获取优惠券
     * @param couponId
     * @return
     */
    Result<CouponDTO> getCouponById(Long couponId);

    /**
     * 检查优惠券的可用性并返回优惠券的最新信息
     * @param couponId
     * @param amount
     * @return
     */
    Result<CouponDTO> useCoupon(Long couponId, BigDecimal amount);
}
